草庐IT

c++ - 包装第 3 方 DLL

全部标签

c - 通过 Hook 调用在 Windows 进程中加速或静音音频播放

我有一个应用程序,我没有播放音频的源代码,但缺乏加速或暂时静音音频播放的工具。我正在尝试通过注入(inject)一个dll并HookwaveOutOpen、waveOutWrite(并分别阻止播放或尝试waveOutSetPlaybackRate以实现静音和加速)来添加这两个功能。但是我有几个问题。让我们先谈谈“静音”按钮,因为这是我的第一项业务:我将函数的Hook版本称为MyWaveOut...1)我可以毫无问题地挂接这些函数,并且我看到它们在dbgView日志语句中被调用。我的第一次尝试是只拦截waveOutWrite函数调用,如果我的“静音”按钮被按下,则只在MyWaveOutW

windows - 为什么加载 dll 不需要完整的文件路径?在什么情况下此功能会有用?

为什么Windows在调用LoadLibrary时不需要完整的文件路径,或者对于带有已注册DLL的CLSID等。在什么情况下有人会受益于不得不退回到DLL搜索顺序来查找dll?我的意思是,%SystemRoot%或%ProgramFiles%等变量可以将您带到适当的文件夹,而.\会让您留在当前目录中。那么为什么要含糊其词? 最佳答案 对于与GetProcAddress()的显式链接,我认为应该尽可能使用DLL的绝对路径。对于与.lib文件的隐式链接,必须在链接时确定DLL的名称,这排除了绝对路径。最安全的做法是将DLL放在与可执行文

c - Windows 上多线程应用程序中非阻塞服务器/监听套接字的最佳方法?

我正在Windows上编写TCP服务器/客户端应用程序,以熟悉WinsockAPI。我有UNIX背景,想知道以下哪种方法是实现应用程序的最佳方法:首先是规范必须能够在多处理器和单处理器系统上很好地扩展。没有硬件连接限制。应用程序既可以监听连接,充当服务器,也可以充当客户端。多线程。第一种方法:在“服务器”线程中用于监听的非阻塞类选择套接字。我们为每个连接的客户端生成一个单独的线程。第二种方法:在“服务器”线程中阻塞用于监听的套接字。我们为每个连接的客户端生成一个单独的线程。第三种方法:在“服务器”线程中用于监听的非阻塞类选择套接字。每个传入连接都没有单独的线程,我想协议(protoco

c - Win VS2008 调用约定 : Delphi dll from c

我在C应用程序(VS2008,Win)中调用了一个用Borland中的Delphi编写的dll中的函数。该函数有效,但每次调用后我都会收到此错误:“ESP的值未在函数调用中正确保存[...]”,这意味着我的调用约定是错误的。我不知道Delphi,也没有完整的dll代码,但我相信这是Delphi函数:functiontranslate(file1,file2:PChar):PChar;stdcall;...Result:=PChar(c);end;exportstranslate;c中的相关部分:typedefchar*(__stdcall*translate)(char*,char*)

c - 监视(Windows)C 中特定进程的 CPU 和内存消耗?

我想在windows(ntarchitecture-xp,vista,win7)中监控给定进程的cpu和内存消耗,每隔几秒制作一个图表我四处搜索但只找到非C解决方案(java、c#、c++等)我知道有一个PerformanceCounter类,但显然它在c中不可用。谢谢 最佳答案 Win32性能计数器:http://msdn.microsoft.com/en-us/library/aa373083%28v=vs.85%29.aspxDeveloperAudience:PerformanceCountersisdesignedforu

windows - 我们可以 rebase kernel32.dll 吗?这样两个进程的加载地址是不同的

具体来说,我想知道同一session中的两个进程的kernel32.dll加载地址是否可以不同?我想使用createremote线程,所以只想知道在任何情况下,远程进程中的kernel32加载地址是否可以不同于注入(inject)进程? 最佳答案 Kernel32.dll在所有进程上具有相同的基址,以允许您执行您想要执行的操作。阅读:WhyarecertainDLLsrequiredtobeatthesamebaseaddresssystem-wide? 关于windows-我们可以re

c++ - 在 C++ 中向本地安装的 MSSQL DB 添加值

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion我查了一下,发现了大量的第3部分库等。我无法选择要使用哪一个。我对我的项目真的没有非常具体的限制。不过,我个人希望尽可能减少开销并降低代码复杂性。那么你建议我采用什么方法连接到本地安装的MSSQL数据库,连接到它,最后向它写入值。谢谢

c - 从一个函数传递到另一个函数的值发生变化......无法弄清楚为什么?

我有一个非常奇怪的问题,我无法理解。这是C代码://belowarethevaluesbeingpassed//longnumTreePeriods=80//doublelength=0.23013698630136986TTimeLineInfo*tlInfo=GtoTimeLineInfoNew((long)ceil(numTreePeriods/length),/*ppy*/0L,1,FALSE);现在这里是上面调用的GtoTimeLineInfoNew函数的签名:__declspec(dllexport)TTimeLineInfo*GtoTimeLineInfoNew(long

c - alá insight for windows

我正在尝试在我的Windows7机器上安装InsightDebugger,但没有成功。我安装了cygwin完整包,并下载了insight的源代码。我正在按照thistutorial中的步骤操作没有任何成功,我已经花了2个小时尝试编译,但没有。它总是给我同样的错误。/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../include/w32api/winsock2.h:632:32:error:conflictingtypesfor'select'/usr/include/sys/select.h:31:5:note:previousdeclarat

c++ - 延迟加载 DLL : "Exception 0xC06D007E: Module not found" when application started multiple times

我的应用程序在使用延迟加载DLL时出现间歇性崩溃。我们在几个不同的调用堆栈中看到了崩溃,但在__delayLoadHelper2中引发0xC06D007E:Modulenotfound时它总是崩溃。连续(串联)多次调用流程时引发异常。这是一个示例调用堆栈:KERNELBASE.dll!RaiseException()+0x3dbytesMYDLL.dll!__delayLoadHelper2(constImgDelayDescr*pidd=0x000000000012f650,__int64(void)**ppfnIATEntry=0x000000000012f570)Line331C